public class Dog {
    //成员变量
    public String name;
    public int age;
    public String color;

    //构造方法
    public Dog(){
        this("小黄",10,"灰色"); //调用 对应三个参数的构造方法     然后会先转到对应三个参数的构造方法 执行相关语句
        System.out.println("调用没有参数的构造方法");
    }


    //构造方法快捷键
    // 鼠标右键
    // generate
    // constructor
    // ctrl或shift 可多选

    public Dog(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //构造方法的重载
    public Dog(String name,int age,String color) {
        // 此构造方法被调用
        // 1.既可以 在main方法中 通过 new Dog(); 并且  无参构造方法中加this(对应此构造方法的参数)
        // 2.也可以  在main方法中 通过 new Dog(传三个对应的参数)，


        //this()    error报错
        this.name = name;
        this.age = age;
        this.color = color;
        System.out.println("构造方法");

    }

    //成员方法
    public void eat() {
        System.out.println(this.name + "在吃狗粮");
    }

    public void sleep() {
        System.out.println(this.name + "在睡觉");
    }

    public void information() {
        System.out.println("姓名: "+ this.name + " 颜色：" + this.color + " 年龄：" + this.age);
    }

    public void play() {
        System.out.println(this.name + "在玩游戏");
    }


    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.information();
    }

    public static void main1(String[] args) {
        //类的实例化
        Dog dog1 = new Dog(); // 在 执行 new Dog() 语句时就已经调用的构造方法
        dog1.name = "小美";
        dog1.age = 2;
        dog1.color = "花色";

        dog1.eat();
        dog1.sleep();
        dog1.play();
        dog1.information();
    }
}
